クランバトル/周回スコア計算の変更点

  • 追加された行はこの色です。
  • 削除された行はこの色です。
  • 移動:バックアップ
  • 最新のバージョン:2025-02-11 20:18:02
  • バージョン:(Rev:VHAwt2XItz)2025-02-11 14:27:34

OldNew差分
4444 boss_hp.append( [ 9,12,15,18,23] )
4545 boss_hp.append( [12,15,20,23,30] )
4646 boss_hp.append( [35,40,45,50,58] )
47- elif version >= 202307:
47+ elif version >= 202304:
4848 boss_hp.append( [ 6, 8,10,12,15] )
4949 boss_hp.append( [ 8,10,13,15,20] )
5050 boss_hp.append( [20,22,25,28,30] )
5555 # 4段階目(全5段階の場合のみ)
5656 if False:
5757 pass
58- elif version >= 202307:
58+ elif version >= 202304:
5959 pass
6060 elif version >= 202204:
6161 boss_hp.append( [22,23,27,29,31] )
7272 boss_hp.append( [540,560,600,620,640] )
7373 elif version >= 202309:
7474 boss_hp.append( [270,280,300,310,320] )
75- elif version >= 202307:
75+ elif version >= 202304:
7676 boss_hp.append( [200,210,230,240,250] )
7777 elif version >= 202209:
7878 boss_hp.append( [145,150,175,195,210] )
9090 boss_mult.append( [ Fraction(x,10) for x in [16,16,18,19,20] ] )
9191 if False:
9292 pass
93- elif version >= 202307:
93+ elif version >= 202304:
9494 boss_mult.append( [ Fraction(x,10) for x in [20,20,21,21,22] ] )
9595 boss_mult.append( [ Fraction(x,10) for x in [45,45,47,48,50] ] )
9696 else:
105105 pass
106106 elif version >= 202309:
107107 loop_sep = [ 0, 6,22]
108- elif version >= 202307:
108+ elif version >= 202304:
109109 loop_sep = [ 3, 9,25]
110110 elif version >= 202112:
111111 loop_sep = [ 3,10,30,38]
130130
131131 stage_scores = [] # 各段階の、全ボスを1体ずつ倒した場合の合計スコア
132132 stage_scores_diff = [] # 各段階の途中周回での、完了に必要な最大値と最小値の差
133- for i in range(len(loop_sep)+1):
134- score = 0
133+ for i in range(len(boss_hp)):
134+ scores = []
135135 for hp, mult in zip(boss_hp[i], boss_mult[i]):
136- score += round(hp_unit * hp * mult)
137- score_diff = score - round(hp_unit * boss_hp[i][0] * boss_mult[i][0])
136+ scores.append( round(hp_unit * hp * mult) )
137+ score = sum(scores)
138+ score_diff = score - min(scores)
138139 stage_scores.append(score)
139140 stage_scores_diff.append(score_diff)
140141
141142 loop_scores = [] # 各周回の、周回完了に必要なスコアの最小値と最大値の対
143+ stage_loop_begin = [0] + loop_sep[:]
144+ stage_loop_end = loop_sep[:] + [loop_max+1]
142145 score = 0
143146 for i in range(len(loop_sep)+1):
144- loop_begin = 0
145- if i > 0:
146- loop_begin = loop_sep[i-1]
147- loop_end = loop_max+1
148- if i < len(loop_sep):
149- loop_end = loop_sep[i]
147+ loop_begin = stage_loop_begin[i]
148+ loop_end = stage_loop_end[i]
149+ if loop_begin >= loop_end:
150+ continue
150151 for j in range(loop_end - loop_begin - 1):
151152 score += stage_scores[i]
152153 score_min = score
153154 score_max = score + stage_scores_diff[i]
154155 loop_scores.append( (score_min, score_max) )
155- if i < len(loop_sep) and loop_begin != loop_end:
156+ if i < len(loop_sep):
156157 score += stage_scores[i]
157158 loop_scores.append( (score, score) )
158159
160161 # ここから計算結果の出力
161162 #
162163
163- for i in range(len(loop_scores)):
164- iloop = i+1
165- score_min, score_max = loop_scores[i]
164+ for iloop,v in enumerate(loop_scores,1):
165+ score_min, score_max = v
166166 if score_min == score_max:
167167 print( '|{:d}|>|CENTER:{:,d}|'.format(iloop, score_min) )
168168 else:
スポンサー